﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Sebrae.Academico.Trilhas.Dominio.Classes;
using Sebrae.Academico.Trilhas.BP;
using System.Data;

namespace Sebrae.Academico.Trilhas.WebForms.Cadastros
{
    public partial class EdicaoTrilhaNivel : System.Web.UI.Page
    {
        private ManterTrilhaNivel trilhaNivel = new ManterTrilhaNivel();
        Dominio.Classes.TrilhaNivel trilhaSelect = null;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (IsPostBack) return;

            CarregaComboPreRequisito();

            if (Session["trilhaSelect"] == null)
            {
                trilhaSelect = new Dominio.Classes.TrilhaNivel();
                txtNome.Text = "";
                txtPrazo.Text = "";
                ddlPreRequisito.SelectedIndex = -1;
            }
            else
            {
                trilhaSelect = trilhaNivel.ObterTrilhaNivelporID(int.Parse(Session["trilhaSelect"].ToString()));
                txtNome.Text = trilhaSelect.Nome;
                txtPrazo.Text = trilhaSelect.QuantidadeDiasPrazo.ToString();
                if (trilhaSelect.PreRequisito != null)
                    ddlPreRequisito.SelectedValue = trilhaSelect.PreRequisito.ID.ToString();


                foreach (TrilhaNivel it in (IList<TrilhaNivel>)ddlPreRequisito.DataSource)
                {
                    if (it.ID == trilhaSelect.ID)
                    {
                        ((IList<TrilhaNivel>)ddlPreRequisito.DataSource).Remove(it);
                        ddlPreRequisito.DataBind();
                        break;
                    }
                }

            }

        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            Session.Remove("trilhaSelect");
            Response.Redirect("ListaTrilhaNivel.aspx", true);
        }

        protected void btnSalvar_Click(object sender, EventArgs e)
        {


            trilhaSelect = new Dominio.Classes.TrilhaNivel();
            trilhaSelect.Nome = txtNome.Text.ToString();
            
            try
            {
                trilhaSelect.QuantidadeDiasPrazo = int.Parse(txtPrazo.Text);
            }
            catch
            {
                ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "erro", "alert('O valor da quantidade informado está inválido.\nVerifique se foram digitados apenas números no campo.');",true);
            }

            if (ddlPreRequisito.SelectedValue != "-1")
                trilhaSelect.PreRequisito = trilhaNivel.ObterTrilhaNivelporID(int.Parse(ddlPreRequisito.SelectedValue));            
            

            if (Session["trilhaSelect"] == null)
            {
                trilhaNivel.Incluir(trilhaSelect);
                trilhaSelect = new Dominio.Classes.TrilhaNivel();
                CarregaComboPreRequisito();
            }
            else
            {
                trilhaSelect.ID = int.Parse(Session["trilhaSelect"].ToString());
                trilhaNivel.Alterar(trilhaSelect);
                btnCancelar_Click(sender, e);
            }
        }

        private void CarregaComboPreRequisito()
        {
            IList<TrilhaNivel> ltl = trilhaNivel.ObterTodos().OrderBy(x => x.Nome).ToList<TrilhaNivel>();
            ltl.Insert(0, new TrilhaNivel() { ID = -1, Nome = "- Todos -" });
            ddlPreRequisito.DataSource = ltl;
            ddlPreRequisito.DataBind();
        }

    }
}